﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Xml;
namespace BattleCity
{
    public abstract class Muro : ObjetoPasivo
    {
        override public bool ImpactaCon(Objeto objeto)
        {
            return objeto.ImpactaCon(this);
        }
        override public bool ImpactaCon(Tanque tanque)
        {
            return tanque.ImpactaCon(this);
        }
        override public bool ImpactaCon(Proyectil proyectil)
        {
            return proyectil.ImpactaCon(this);
        }
        override public bool ImpactaCon(Muro muro) { return true; }
        override public bool ImpactaCon(Base baseob) { return true; }
        override public bool ImpactaCon(Teletransportador bonus) { return true; }

        override public void Daniar(int danio)
        {
            this.energia = this.energia - danio;

            if (this.energia <= 0)
            {
                Escenario.getEscenario().Objetos.Remove(this);
                Point ubicacion = new Point();
                ubicacion = this.Figura.getUbicacion();
                Explosion unaExplosion = new Explosion(ubicacion);
                Escenario.getEscenario().Objetos.Add(unaExplosion);
                
            }
        }

	    public override void Persistir(XmlDocument xml, XmlNode subnodo)
        {

            XmlNode principal = xml.CreateElement(this.nombre);
            XmlNode energia = xml.CreateElement("Energia");
            XmlNode posicion = xml.CreateElement("Posicion");
            XmlNode x = xml.CreateElement("X");
            XmlNode y = xml.CreateElement("Y");

            energia.InnerText = Energia.ToString();
            
            x.InnerText = X.ToString();
            y.InnerText = Y.ToString();

            posicion.AppendChild(x);
            posicion.AppendChild(y);

            principal.AppendChild(energia);
            principal.AppendChild(posicion);

            subnodo.AppendChild(principal);
        }
    }
}
